/*
  属性的简写和方法的简写

var name = 'Limi'
var app = {
  name,
  run() {
    console.log(`${this.name}在写代码`)
  }
}
*/

/*
  ES6之前异步的处理

function getData(callback) {
  setTimeout(() => {
    var name = 'Limi'
    callback(name)
  }, 1000);
}

getData(function(str){
  console.log(str)
})
 */

 /**
  * Promise来处理异步 
  *  - resolve成功的回调函数 
  *  - reject失败的回调函数
 
 function getData(resolve, reject){
  setTimeout(() => {
    var name = '张三'
  resolve(name)
  }, 1000);
}
var p = new Promise(getData)
p.then((data) => {
  console.log(data)
})
*/

/**
 * async 让方法变成异步方法
 * await 等待异步方法,await必须用在async方法里面
 
async function test() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      var name = 'Limi'
      resolve(name)
    }, 1000);
  })
}

async function main() {
  var data = await test() // 获取异步方法里的数据
  console.log(data)
}

main()
*/

const fs = require('fs')

// 1. 定义一个isDir的方法判断一个资源是目录还是文件
async function isDir(path) {
  return new Promise((resolve, reject) => {
    fs.stat(path, (error, stats) => {
      if (error) {
        console.log(error)
        reject(error)
        return
      }
      if (stats.isDirectory()) {
        resolve(true)
      } else {
        return false
      }
    })

  })
}

// 2. 获取upload里面的所有资源，遍历循环
function main() {
  var path = './upload'
  var dirArr = []
  fs.readdir(path, async (err, data) => {
    if (err) {
      console.log(err)
      return
    }
    for(let i=0;i<data.length;i++) {
      if (await isDir(path+'/'+data[i])) {
        dirArr.push(data[i])
      }
      console.log(dirArr)
    }
  })
}

main()